import java.util.*;


class Main1 {
    public static void main(String[] args) {
        Random random = new Random();
        int[] arr = new int[10_0000];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(100);
        }
        f3(arr);

    }
    // 1、统计10w个数中不重复的数据,这些数据0-99
    public static void f1(int[] arr){
        Set<Integer> set = new HashSet<>();  // TreeSet也行，只是效率上看HashSet更快

        for (int i = 0; i < arr.length; i++) {
            set.add(arr[i]);
        }
        System.out.println(set);
    }
    // 2、打印10w个数中第一个重复的数据
    public static void f2(int[] arr){
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < arr.length; i++) {
            if(!set.contains(arr[i])){
                // System.out.print(arr[i]+" ");  //便于观察
                set.add(arr[i]);
            }else {
                System.out.println();
                System.out.println(arr[i]);
                return;
            }
        }
    }


    // 3、统计十万个数据当中，每个数据出现的次数
    public static void f3(int[] arr){
        // 第一步：遍历原来的数据，统计每个数据出现的次数
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < arr.length; i++) {
            int key = arr[i];
            if (map.get(key) == null) {
                map.put(key,1);
            }else {
                int val = map.get(key);
                map.put(key, val + 1);
            }
        }
        System.out.println(map);
    }

}
